# class Person:
#     """
#     人类
#
#     实例内容：  通过self操作 self.*  通过实例操作 p.*
#     实例属性：name, age
#     实例方法：__init__, init_age(第一个参数是self)
#
#     类内容：
#     类属性：NAME
#     类方法： class_info（使用@classmethod 装饰器  第一个参数是cls）
#     静态方法：单纯通过类名调用的快捷方法
#
#     """
#
#     # 在类内指定定义的属性就是类属性   实例可以获取  不可以设置
#     NAME = "Person"
#     MAX_AGE = 150
#
#     def __init__(self, name):
#         """
#         初始化函数
#         :param name: 通过形参name给实例self添加一个实例属性
#         第一个形参是self的函数都有能力操作self  都可以称为实例方法
#         self中添加的属性都可以称为实例属性
#         """
#         self.name = name
#
#     def init_age(self, age):
#         self.age = age
#
#
#     # 使用装饰器将 普通函数升级为类方法  cls 相当于类的引用
#     # 类方法 获取类信息  类名，父类，类注释
#     @classmethod
#     def class_info(cls):
#         print("abc", cls.__name__, cls.__base__, cls.__doc__)
#
#     # 使用装饰器 将普通方法升级为静态方法
#     @staticmethod
#     def say_hello():
#         print("hello")
#
# p = Person("张三")
# print(p.name)
#
# p.init_age(20)
# print(p.age)
#
#
# print(Person.NAME, Person.MAX_AGE)
# Person.NAME = "PersonName"
# Person.MAX_AGE = 250
# print(Person.NAME, Person.MAX_AGE)
#
#
# Person.class_info()
#
#
# Person.say_hello()





